package cn.kgc.shiro01;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.subject.Subject;

public class App {
    public static void main( String[] args ) {

        // 创建默认的安全管理器
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        // 给默认的安全管理器对象注入  realm对象  实现数据的查询
        //IniRealm iniRealm = new IniRealm("classpath:user.ini");
        // 创建自定义realm对象
        CustomerRealm customerRealm = new CustomerRealm();
        // 创建凭证匹配器对象  替换默认的凭证匹配器
        HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher("MD5");
        // 设置密码hash次数
        hashedCredentialsMatcher.setHashIterations(1024);
        customerRealm.setCredentialsMatcher(hashedCredentialsMatcher);

        defaultSecurityManager.setRealm(customerRealm);
        //给安全管理工具类 注入安全管理器
        SecurityUtils.setSecurityManager(defaultSecurityManager);
       //获取主体对象  实现认证流程 subject
        Subject subject = SecurityUtils.getSubject();
       // 通过 subject 调用login方法完成认证操作
        UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("root", "12345");
        subject.login(usernamePasswordToken); //  没有异常抛出 认证通过
        System.out.println("==============认证通过============");

    }
}
